import { request } from "../../request/index";

/* 
  功能1：点击预览大图
    1 绑定点击事件
    2 查找显示大图API 
  功能2：加入购物车
    1 添加绑定监听事件
    2 获取缓存中购物车数据 数组
    3 先判断当前商品是否已经在购物车
    4 存在 修改商品数据 购物车++ 重新把购物车数组填充回缓存中
    5 否则 在购物车数组中添加新元素 重新把购物车数组填充回缓存中
    6 弹出提示 加入成功
  功能3：商品收藏
    1 显示收藏按钮 onshow
      1 从缓存中判断当前商品是否被收藏
      2 是 改变图标
    2 点击收藏按钮
      1 判断缓存中是否有该商品
        1 存在 从收藏数组中删除
        2 不存在 添加该商品到收藏数组
*/
Page({
  data: {
    goodObj:{},
    GoodsInfo:{},
    // 收藏
    isCollect:false,
    collect:[]
  },
  onShow: function () {
    let pages=getCurrentPages();
    let currentPage=pages[pages.length-1];
    let options=currentPage.options;
    const {goods_id}=options;
    this.getGoodsDetail(goods_id);
  },

  // 获取商品详情数据
  async getGoodsDetail(goods_id){
    const goodObj=await request({url:"/goods/detail",data:{goods_id}});
    this.GoodsInfo=goodObj;

    // 1 获取缓存中收藏数组
    let collect=wx.getStorageSync('collect')||[];
    // 2 判断当前商品是否被收藏
    let isCollect=collect.some(v=>v.goods_id===this.GoodsInfo.goods_id);
    this.setData({
      // 只保存需要的数据
      goodObj:{
        goods_name:goodObj.goods_name,
        goods_price:goodObj.goods_price,
        // iphone手机不能识别webp格式
        // 最好找后台修改
        // 前端使用正则表达式全部修改：
        goods_introduce:goodObj.goods_introduce.replace(/\.webp/g,'.jpg'),
        pics:goodObj.pics
      },
      isCollect
    })
  },

  // 大图预览
  handlePrevewImage(e){
    // 构造需要预览的图片url数组 
    const urls=this.GoodsInfo.pics.map(v=>v.pics_mid);
    // 接收传递过来的图片
    const current=e.currentTarget.dataset.url
    wx.previewImage({
      urls,
      current
    })
  },

  // 加入购物车
  handleCartAdd(e){
    //1 获取缓存中的购物车
    let cart=wx.getStorageSync("cart")||[];
    //2 在购物车数组中获取当前商品下标
    let index=cart.findIndex(v=>v.goods_id===this.GoodsInfo.goods_id);
    //3 判断是否存在
    if(index===-1){
      // 不存在 添加
      this.GoodsInfo.num=1;
      this.GoodsInfo.checked=true;
      cart.push(this.GoodsInfo);
    } else{
      // 存在 商品num++；
      cart[index].num++;
    }

    // 重新添加到缓存中
    wx.setStorageSync('cart', cart);

    // 弹出提示
    wx.showToast({
      title: '加入成功',
      icon:'success',
      duration: 750,
      // 防止用户手抖 疯狂点击
      mask:true
    })
  },

  // 点击收藏
  handleCollect(){
    let isCollect=false;
    // 收藏数组
    let collect=wx.getStorageSync('collect')||[];
    // 判断商品是否被收藏
    let index=collect.findIndex(v=>v.goods_id===this.GoodsInfo.goods_id);
    // index!=-1 已收藏
    if(index!==-1){
      // 删除该商品
      collect.splice(index,1);
      isCollect=false;
      wx.showToast({
        title: '取消收藏',
        icon: 'success',
        duration: 750,
        mask: true,
      });     
    }else{
      // 添加商品
      collect.push(this.GoodsInfo);
      isCollect=true;
      wx.showToast({
        title: '收藏成功',
        icon: 'success',
        duration: 750,
        mask: true,
      });
    }
    //存缓存
    wx.setStorageSync('collect', collect);
    this.setData({
      isCollect
    })
  }

})